#ifndef PUBMEDGENOMEELEMENTDATAPACKET_H
#define PUBMEDGENOMEELEMENTDATAPACKET_H

#include <QObject>
#include <QString>
#include <QDebug>

#include "../BaseDataManagement/genomeelementdatapacket.h"

/**PubmedGenomeElementDataPacket class.
  * The essential purpose of this class is to encapsulate data about genome elements from PubMed databases
  * keeping the data separate from the representation of the data.
  * I believe this will be useful for the following reasons:
*/
class PubMedGenomeElementDataPacket : public GenomeElementDataPacket
{
    Q_OBJECT
public:
    explicit PubMedGenomeElementDataPacket( QObject *parent = 0);
    explicit PubMedGenomeElementDataPacket( QString seqId, QString source, QString type, int start, int stop, bool posStrand,
                                            QString parentContigId, bool hasCluster, QString clusterId,
                                            bool hasSpecies, QString species,
                                            QString id, QString name, QString product, QString parentElement,
                                            QObject *parent = 0);

    typedef GenomeElementDataPacket super;

    void setAll( QString seqId, QString source, QString type, int start, int stop, bool posStrand,
                 QString parentContigId, bool hasCluster,QString clusterId,
                 bool hasSpecies, QString species,
                 QString id, QString name, QString product, QString parentElement );

    void setId( QString id );
    void setName( QString name );
    void setProduct( QString product );
    void setParentElement( QString parentElement );

    QString getId( );
    QString getName( );
    QString getProduct( );
    QString getParentElement( );

    QString getIdentifierToDisplay();
    QString getDataToDisplay();

    QString toString();
    QString getUniqueId();

signals:

public slots:

private:
    QString id;
    QString name;
    QString product;
    QString parentElement;

};

#endif // PUBMEDGENOMEELEMENTDATAPACKET_H
